import java.io.IOException;

class P10132_39643 {

        private static String newLine = System.getProperty("line.separator");

        static String readLn () {
                StringBuffer buffer = new StringBuffer();
                int car = -1;

                try {
                        car = System.in.read();
                        while ((car > 0) && (car != newLine.charAt(0))) {
                                buffer.append((char)car);
                                car = System.in.read();
                        }
                        if (car == newLine.charAt(0))
                                System.in.skip(newLine.length() - 1);
                } catch (IOException e) {
                        return (null);
                }

                if ((car < 0) && (buffer.length() == 0))
                        return (null);  /* eof */
                return (buffer.toString());
        }


        public static void main(String[] args) {
          int numeroDeCasos = Integer.parseInt(readLn());
          readLn();
          for (int k = 0; k < numeroDeCasos; k++) {
            computaUmCaso();
            
            if (k + 1 != numeroDeCasos) System.out.println();
            
          }
        }

        private static void computaUmCaso() {
          String linha = readLn();
          String[] fragmentos = new String[288];
          int contador = 0;
          while(linha != null && !linha.equals("")) {
            fragmentos[contador] = linha;
            contador++;
            linha = readLn();
          }
          String[] fragmentosLidos = new String[contador];
          for (int k = 0; k < contador; k++) {
            fragmentosLidos[k] = fragmentos[k];
          }

          ordena(fragmentosLidos);

          String file = null;
          int apontador1 = (fragmentosLidos.length / 2) - 1;
          int apontador2 = apontador1 + 1;
          while (file == null) {
            file = checa(fragmentosLidos, apontador1, apontador2);
            apontador1--;
            apontador2++;
          }

          System.out.println(file);

        }

        private static String checa(String[] fragmentos, int apontador1, int apontador2) {
          String resposta = fragmentos[apontador1] + fragmentos[apontador2];
          boolean ehResposta = true;
          int tamanho = fragmentos.length / 2;
          for (int k = 0; k < tamanho; k++) {
            ehResposta = (resposta.startsWith(fragmentos[k]) && resposta.endsWith(fragmentos[fragmentos.length - 1 - k])) || (resposta.startsWith(fragmentos[fragmentos.length - 1 - k]) && resposta.endsWith(fragmentos[k]));
          }
          if (ehResposta)
            return resposta;
          resposta = fragmentos[apontador2] + fragmentos[apontador1];
          ehResposta = true;
          tamanho = fragmentos.length / 2;
          for (int k = 0; k < tamanho; k++) {
            ehResposta = (resposta.startsWith(fragmentos[k]) && resposta.endsWith(fragmentos[fragmentos.length - 1 - k])) || (resposta.startsWith(fragmentos[fragmentos.length - 1 - k]) && resposta.endsWith(fragmentos[k]));
          }
          if (ehResposta)
            return resposta;
          return null;

        }


        private static void ordena(String[] array) {
          int length = array.length;
          for (int k = 1; k < length; k++) {
            int daVez = k;
            int apontador = k - 1;
            while ( (apontador > -1) && ((array[daVez].length() < array[apontador].length()) || (array[daVez].length() == array[apontador].length() && array[daVez].compareTo(array[apontador]) < 0) )) {
              troca(array, daVez, apontador);
              daVez--;
              apontador--;
            }
          }
        }

        private static void troca(String[] array, int posicao1, int posicao2) {
          String aux = array[posicao1];
          array[posicao1] = array[posicao2];
          array[posicao2] = aux;
        }

}

